package com.cs.beneficios.web.action;
import com.cs.paoyer.administration.business.model.UserVO;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
//import org.apache.struts.action.ActionError;
//import org.apache.struts.action.ActionErrors;
import java.io.IOException;
import javax.servlet.ServletException;
import com.cs.beneficios.common.ConnectionFactory;

public class BorrarProgramaAction extends Action 
{
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   * @return 
   * @throws java.io.IOException
   * @throws javax.servlet.ServletException
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {
    //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
	ConnectionFactory cf = new ConnectionFactory();
    //database db = new database();
    Connection conn = null;
    String strrazon = null;
    ResultSet rs = null;
    String strcodsub = null;
    HttpSession session = request.getSession();
    
    try{              
      conn = cf.getConnection();
    }catch (SQLException e){
//        System.out.println("Error al realizar la conexi�n" + e.getMessage());
    }
    
     String strcodprog = request.getParameter("Programa");
     String Origen = request.getParameter("Origen");
     try {
        strrazon = request.getParameter("razon");
      }
      catch (Exception e){
        strrazon = "";
      }
    
    //Trae todos los subprogramas de un programa
    
    String strSql1 = " SELECT sub.codigo codigo, sub.nombre subprogramas "+
                     " FROM TCS_BEN_SUBPROGRAMA sub, TCS_BEN_PROGRAMA prog "+
                     " WHERE sub.PRG_CODIGO = prog.CODIGO AND prog.codigo = ? ";
     String strPar1[] = {strcodprog}; 
     
     //Proceso para la auditoria
      UserVO user = (UserVO) request.getSession().getAttribute("userInfo");
      String terminalAddress = request.getRemoteAddr();
      String strTerminal = ("WEB="+terminalAddress);
      Calendar c = Calendar.getInstance(); 
      SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");   
      //Fin del proceso
     
     try{
          rs = cf.getRecordsRset(strSql1,strPar1,conn);
          while(rs.next()){
          strcodsub = rs.getString("codigo");
          String strSql = " update tcs_ben_subprograma set vigencia ='I', "+
                          " USUARIO_MODIFICA = ?, FECHA_MODIFICA = to_date(?,'dd/mm/yyyy'), "+
                          " TERMINAL_MODIFICA = ? "+
                          " where codigo = ? ";
          String strPar[] = {user.getName(), dateFormat.format(c.getTime()),strTerminal,strcodsub};
          try{
           int modificar = cf.execSql(strSql,strPar,conn);
           }
           catch(SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
             }  
            }
          }
        catch(SQLException e){
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
          }
   
    String strSql = " update tcs_ben_programa set vigencia ='I', comentario = '"+strrazon+"', "+
                    " USUARIO_MODIFICA = ?, FECHA_MODIFICA = to_date(?,'dd/mm/yyyy'), "+
                    " TERMINAL_MODIFICA = ? "+
                    " where codigo = ? ";
    String strPar[] = {user.getName(), dateFormat.format(c.getTime()),strTerminal,strcodprog};
    try{
        int modificar = cf.execSql(strSql,strPar,conn);
        cf.closeConnection(conn);
        if(modificar > 0)
        {
          if(Origen != null){
             session.setAttribute("mensajes","El programa fue desactivado correctamente.");
               return mapping.findForward("success");
            }else{
            session.setAttribute("mensajes","El programa fue desactivado correctamente.");
            request.setAttribute("indica","indica");
            return mapping.findForward("forward1");
            }
        }
     }
     catch(SQLException e)
     {
		System.err.println("/******** TDSUB - cwsub");
		e.printStackTrace();
		System.err.println("TDSSPE - cwsub ********/");
      session.setAttribute("mensajes","No fue posible desactivar el programa.");
      return mapping.findForward("forward1");
     }  
    return mapping.findForward("success");
  }
}